Labview 入坑(2) | 您所在的位置:网站首页 › labview dll调用 › Labview 入坑(2) |
一、调用C++库
原本比较熟悉Qt 想用Qt 创建个dll给Labview,但是好像测试时,没有用VS创建出来的dll导入那么顺利Qt Creator创建出来的是类,感觉labview对C++类好像导入有点问题,至少我导入时是识别不到类的. 1、记录下创建Qt库的过程,我这边是32位的labview 所以选择32位的dll 默认的dll文件会创建一个类出来,这个类导入labview 是识别不出来的,需要将类去除直接修改成函数去调用。 cpp修改成入下 #include "qdllcore.h" int QSumInt(int num1, int num2) { return num1 + num2; }.h文件修改如下 #ifndef QDLLCORE_H #define QDLLCORE_H #include "qdllcore_global.h" QDLLCORE_EXPORT int QSumInt(int num1, int num2); #endif // QDLLCORE_H然后编译生成dll文件在debug里,出错不需要管(因为dll没有法直接运行) 测试dll 找个例子拖动2个输入数值控件一个输出测试以下加减法 拖成这个样子 更换箭头工具双击进入后面板导入对应的库,空白区域右键拖入 拖入后双击调用函数节点,然后选择对应的dll文件,识别完修改对应的函数输入输出映射 这个参数需要手动的选择 选择完点击确定就剩下连接线了 然后点击运行就成功了。 二、用同样的方法测试下VS下创建的C++库(连线就省略了)C++库调用都一样,就是VS创建动态dll有区别 创建完后生成默认的几个文件 自己添加个.h和.cpp文件,敲入代码 .h文件 extern "C" __declspec(dllexport) int SumInt(int num1, int num2);.cpp文件 #include "pch.h" #include "dllapi.h" int SumInt(int num1,int num2) { return num1 + num2; }编译出dll文件完和Qt加载dll一样创建个空白VI,拖动对应的空间,最后加载dll 反正VS创建完没有乱码,感觉比较舒服 运行也正常 三、C# 的.net dll看labview 官网是说对.net 支持会比较好。所以就搞个.net库来试试。 一样新建.net的dll文件 创建.net库工程,名字自行命名。没有头文件比较简单 搞个方法放进去 public class DllApi { public double add(double a, double b) { return a + b; } }编译出dll报错无需理会 拖入面板还是一样的控件 转到背板后,拖动出对应的节点,因为C#可以导入类,所以还需要从类里面导入方法。 再对应的拖入方法 然后去方法那边选择方法 连接对应的连接线运行,和前面两个都一样,但是C#感觉支持比较舒服,还能导入控件什么的 四、总结 VS 创建出来的C++ dll 和QT 创建出来的C++dll VS兼容比较好,函数名称可以看得清楚(预计是QT的编码格式问题),但是两个函数都是正常使用的,.net 创建的dll 很好的兼容,而且自定义控件也是可以拉入的,也可以导入C#的类,和属性。整体兼容比较舒服 |
CopyRight 2018-2019 实验室设备网 版权所有 |